package cl.inmobiliaria.beans;

import java.io.IOException;
import java.io.Serializable;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

import cl.inmobiliaria.entidades.Bodega;
import cl.inmobiliaria.entidades.Cotizacion;
import cl.inmobiliaria.entidades.Departamento;
import cl.inmobiliaria.entidades.Estac;
import cl.inmobiliaria.entidades.Etapa;
import cl.inmobiliaria.entidades.Productos;
import cl.inmobiliaria.entidades.Proyecto;
import cl.inmobiliaria.negocio.DatosCotizacion;
import cl.inmobiliaria.negocio.DatosDepartamento;


@ManagedBean(name = "generarCotizacionBean")
@ViewScoped
public class GenerarCotizacionBean implements Serializable {

	private static final long serialVersionUID = 1L;
	private int idEtapa;
	private int idDpto;
	private int idEstac;
	private int idBodega;
	private Map<String,String> comboDptos = new HashMap<String, String>();
	private Map<String,String> comboEstacs = new HashMap<String, String>();
	private Map<String,String> comboBodegas = new HashMap<String, String>();
	private List<Departamento> lstDpto;
	private List<Estac> lstEstacionamiento;
	private List<Bodega> lstBodega;
	 
	public int getIdEtapa() {
		return idEtapa;
	}

	public void setIdEtapa(int idEtapa) {
		this.idEtapa = idEtapa;
	}

	public int getIdDpto() {
		return idDpto;
	}

	public void setIdDpto(int idDpto) {
		this.idDpto = idDpto;
	}

	public int getIdEstac() {
		return idEstac;
	}

	public void setIdEstac(int idEstac) {
		this.idEstac = idEstac;
	}

	public int getIdBodega() {
		return idBodega;
	}

	public void setIdBodega(int idBodega) {
		this.idBodega = idBodega;
	}

	public Map<String, String> getComboDptos() {
		return comboDptos;
	}

	public void setComboDptos(Map<String, String> comboDptos) {
		this.comboDptos = comboDptos;
	}

	public Map<String, String> getComboEstacs() {
		return comboEstacs;
	}

	public void setComboEstacs(Map<String, String> comboEstacs) {
		this.comboEstacs = comboEstacs;
	}

	public Map<String, String> getComboBodegas() {
		return comboBodegas;
	}

	public void setComboBodegas(Map<String, String> comboBodegas) {
		this.comboBodegas = comboBodegas;
	}

	public List<Departamento> getLstDpto() {
		return lstDpto;
	}

	public void setLstDpto(List<Departamento> lstDpto) {
		this.lstDpto = lstDpto;
	}

	public List<Estac> getLstEstacionamiento() {
		return lstEstacionamiento;
	}

	public void setLstEstacionamiento(List<Estac> lstEstacionamiento) {
		this.lstEstacionamiento = lstEstacionamiento;
	}

	public List<Bodega> getLstBodega() {
		return lstBodega;
	}

	public void setLstBodega(List<Bodega> lstBodega) {
		this.lstBodega = lstBodega;
	}

	public GenerarCotizacionBean(){
		 
		  /******************************************************************************/
		  /*UTILIZAR SESION PROYECTO Y ETAPA**********************************************/
		  Proyecto proyecto = new Proyecto();
		  int idProyecto = (Integer) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("idProyecto");
		  proyecto.setIdProyecto(idProyecto);
		  
		  Etapa etapa = new Etapa();
		  etapa.setIdEtapa(1);
		  etapa.setProyecto(proyecto);
		  /******************************************************************************/
		  /******************************************************************************/
		  
		  Productos productos = new Productos();	  
		  DatosDepartamento datoDepa = new DatosDepartamento();
		  productos = datoDepa.obtenerProductos(etapa);

		  List<Departamento> dptos = productos.getDeptoList();
		  List<Bodega> bodegas = productos.getBodegaList();
		  List<Estac> estacs = productos.getEstacList();

		  setLstDpto(dptos);
		  setLstEstacionamiento(estacs);
		  setLstBodega(bodegas);
		  
		  for (int i=0; i<dptos.size(); i++)
		  { 
			  comboDptos.put(dptos.get(i).getTextoCombo(), String.valueOf(dptos.get(i).getIdDpto()));
		  }
		
		  for (int i=0; i<bodegas.size(); i++)
		  { 
			  comboBodegas.put(bodegas.get(i).getTextoCombo(), String.valueOf(bodegas.get(i).getIdBodega()));
		  }
		  
		  for (int i=0; i<estacs.size(); i++)
		  { 
			  comboEstacs.put(estacs.get(i).getTextoCombo(), String.valueOf(estacs.get(i).getIdEstacionamiento()));
		  }
	 }
	
	public void guardarCotizacion() throws IOException
	{
		DatosCotizacion datosCotizacion = new DatosCotizacion();
		Bodega bodegaSeleccionada = datosCotizacion.traeBodegaSeleccionada(this.lstBodega, (short) this.idBodega);
		Departamento deptoSeleccionado = datosCotizacion.traeDepartamentoSeleccionado(this.lstDpto, (short) this.idDpto);
		Estac estacSeleccionado = datosCotizacion.traeEstacionamientoSeleccionado(this.lstEstacionamiento, (short) this.idEstac);
		
		Cotizacion cotizacion = new Cotizacion();
		cotizacion.setIdBodega((short) bodegaSeleccionada.getIdBodega());
		cotizacion.setPrecioBodega(bodegaSeleccionada.getPrecio());
		cotizacion.setIdInmueble(deptoSeleccionado.getIdDpto());
		cotizacion.setPrecioInmueble(deptoSeleccionado.getPrecioUf()*10);
		cotizacion.setIdEstacionamiento((short) estacSeleccionado.getIdEstacionamiento());
		cotizacion.setPrecioEstacionamiento(estacSeleccionado.getPrecio());
		cotizacion.setIdTipoProducto('D');
		cotizacion.setIdEtapa("1");
		
		
		
		int idVisita = (Integer) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("idVisita");
		cotizacion.setIdVisita(idVisita);
		
		cotizacion.setTotal((deptoSeleccionado.getPrecioUf()*10)+estacSeleccionado.getPrecio()+bodegaSeleccionada.getPrecio());
		
		int idCotizacion = datosCotizacion.insertarCotizacion(cotizacion);
		FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("idCotizacion",idCotizacion);
		
		FacesContext.getCurrentInstance().getExternalContext().redirect("desplegarCotizacion.xhtml");
	}
	 
}
